perm filename SIG.MAC[4,ALS]1 blob sn#051782 filedate 1973-07-05 generic text, type T, neo UTF8
00010	TITLE SIG
00020	
00030	ENTRY SIG
00040	
00050		;Signature table processing routine. JUNE 29,1973.
00060		;Designed for 256 word tables.
00070	EXTERNAL 	USE,LRN,HINT,UPCNT
00080	EXTERNAL 	INDAT,INCNT,FLAG
00090	EXTERNAL	SEGC
00100	EXTERNAL	IN1,IN2,IN3,IN4,NAMES,OUTPUT,PARENT
00110	EXTERNAL	OUT1,OUT2,OUT3,OUT4,PHW,LRN1,LRN2,LRN3,LRN4
00120	
00130	;Name	 	Contents of arrays used in SIG
00140	;PHLIST		6-bit name of phonette
00150	;FLIST		6-bit name of feature
00160	;HLIST		word with 1's at locations corresponding to feature index
00170	;PARENT		POINT word specifying field in an OUTPUT word of PARENT
00180	;IN1		POINT word to correct number of bits in an INDAT word
00190	;IN2		POINT word to correct number of bits in an INDAT word
00200	;IN3		POINT word to correct number of bits in an INDAT word
00210	;IN4		POINT word to correct number of bits in an INDAT word
00220	;OUT1		6-bit name of output Ph or Feature
00230	;OUT2		6-bit name of output Ph or Feature
00240	;OUT3		6-bit name of output Ph or Feature
00250	;OUT4		6-bit name of output Ph or Feature
00260	;LRN1		0 if OUT1 is a Ph or else HLIST type word
00270	;LRN2		0 if OUT2 is a Ph or else HLIST type word
00280	;LRN3		0 if OUT3 is a Ph or else HLIST type word
00290	;LRN4		0 if OUT4 is a Ph or else HLIST type word
00300	;OUTPUT		4 probability values for the 4 out properties
00310	
00320	
00330	;Index register assignments
00340	;Regester	Usage
00350	Z=0		; general purpose register
00360	I=1		;Used to index ITEMS IN HEADER TABLES
00370	J=2		;Used to index within  tables
00380	K=3		;Special purpose indexing and general use when Z not wanted
00390	L=4
00400	M1=5		;Used to hold counter bit
00410	M2=6		;Used for the 2nd field
00420	IN=7		;Used to hold start of INDAT array
00430	M3=10		;Used for the 3rh field
00440	M4=11		;Used for the 4th field
00450	S=12
00460	OU=13		;Reserved exclusively for start of output array
00470	T=14		;Used to index thru TABLES
00480	H=15		;Used to hold HINT word
00490	P=16		;Used to hold start of array PARENT
00500	X=17		;Used to index in buckets
00510	
00520	SIG:	0
00530		MOVEM	17,SAVE+17
00540		MOVE	17,[XWD 0,SAVE]
00550		BLT	17,SAVE+16
00560	
00570		SKIPE	FLAG
00580		JRST	A1		;Addrtss fields already set up
00590		MOVE	Z,IN1		;Start of array IN1
00600		HRRM	Z,IN1A		;Pre set address fields in progral
00610		HRRM	Z,IN1B
00615	
00620		MOVE	Z,IN2
00630		HRRM	Z,IN2A
00640		HRRM	Z,IN2B
00645	
00650		MOVE	Z,IN3
00660		HRRM	Z,IN3A
00670		HRRM	Z,IN3B
00675	
00680		MOVE	Z,IN4
00690		HRRM	Z,IN4A
00700		HRRM	Z,IN4B
00705	
00710		MOVE	Z,OUTPUT
00720		HRRM	Z,OUTA
00730		HRRM	Z,OUTB
00740		HRRM	Z,OUTC
00750		HRRM	Z,OUTD
00755	
00760		MOVE	Z,USE
00770		HRRM	Z,USEA
00772	
00775		MOVE	Z,LRN
00777		HRRM	Z,ADDM1
00778		HRRM	Z,ADDM2
00779		HRRM	Z,ADDM3
00782		HRRM	Z,ADDM4
00783	
00785		MOVE	Z,NAMES
00790		HRRM	Z,NAMA
00795	
00800		MOVE	Z,PARENT
00810		HRRM	Z,PARA
00820	
00830		MOVE	Z,OUT1
00840		HRRM	Z,OUT1A
00850		MOVE	Z,LRN1
00860		HRRM	Z,LRN1A
00870	
00880		MOVE	Z,OUT2
00890		HRRM	Z,OUT2A
00900		MOVE	Z,LRN2
00910		HRRM	Z,LRN2A
00920	
00930		MOVE	Z,OUT3
00940		HRRM	Z,OUT3A
00950		MOVE	Z,LRN3
00960		HRRM	Z,LRN3A
00970	
00980		MOVE	Z,OUT4
00990		HRRM	Z,OUT4A
01000		MOVE	Z,LRN4
01010		HRRM	Z,LRN4A
01015		JRST	FINISH
01017	
01020	A1:	MOVE	IN,INDAT	;Required by MAKE made pointers
01030		MOVE	OU,OUTPUT
01040		MOVE	P,PARENT
01050		SETZ	I,
01060		SETZ	T,
01070		MOVSI	M1,1000
01075		MOVSI	M2,1
01080		MOVEI	M3,1000
01085		MOVEI	M4,1
01090	
01100	
01110	NAMA:	SKIPN	0(I)		;Set to first item in names array
01120		JRST	FINISH
01130	
01140	IN1A:	LDB	J,0(I)		;Concatenate for index to line
01150	IN2A:	LDB	K,0(I)		;IN address fields preset above
01160		LDB	L,IN2B		;To get shift value from IN2
01170		LSH	J,@L
01180		ADD	J,K
01190	IN3A:	LDB	K,0(I)
01200		LDB	L,IN3B
01210		JUMPE	L,A2
01220		LSH	J,@L
01230		ADD	J,K
01240	IN4A:	LDB	K,0(I)
01250		LDB	L,IN4B
01260		JUMPE	L,A2
01270		LSH	J,@L
01280		ADD	J,K
01290	A2:	ADD	J,T
01292		SKIPG	FLAG
01293		JRST	L1
01300	USEA:	MOVE	K,0(J)
01310	PARA:	LDB	L,0(I)
01320		LDB	Z,POINTA
01330		IMUL	Z,L
01340		LSH	Z,-9
01350		DPB	Z,OUTA
01360		LDB	Z,POINTB
01370		IMUL	Z,L
01380		LSH	Z,-9
01390		DPB	Z,OUTB
01400		LDB	Z,POINTC
01410		IMUL	Z,L
01420		LSH	Z,-9
01430		DPB	Z,OUTC
01440		LDB	Z,POINTD
01450		IMUL	Z,L
01460		LSH	Z,-9
01470		DPB	Z,OUTD
01480		ADDI	T,400
01490		AOJA	I,NAMA
01500	
01510	L1:
01550	
01560	LRN1A:	SKIPE	K,0(I)
01570		JRST	FEAT1
01580	OUT1A:	MOVE	K,0(I)
01590		CAME	K,PHW
01600		JRST	LRN2A
01610	ADDM1:	ADDM	M1,0(J)
01620		JRST	LRN2A
01630	FEAT1:	AND	K,HINT
01640		JUMPN	K,ADDM1
01650	
01660	LRN2A:	SKIPE	K,0(I)
01670		JRST	FEAT2
01680	OUT2A:	MOVE	K,0(I)
01690		CAME	K,PHW
01700		JRST	LRN3A
01710	ADDM2:	ADDM	M2,0(J)
01720		JRST	LRN3A
01730	FEAT2:	AND	K,HINT
01740		JUMPN	K,ADDM2
01750	
01760	LRN3A:	SKIPE	K,0(I)
01770		JRST	FEAT3
01780	OUT3A:	MOVE	K,0(I)
01790		CAME	K,PHW
01800		JRST	LRN4A
01810	ADDM3:	ADDM	M3,0(J)
01820		JRST	LRN4A
01830	FEAT3:	AND	K,HINT
01840		JUMPN	K,ADDM3
01850	
01860	LRN4A:	SKIPE	K,0(I)
01870		JRST	FEAT4
01880	OUT4A:	MOVE	K,0(I)
01890		CAME	K,PHW
01900		JRST	LRNEX
01910	ADDM4:	ADDM	M4,0(J)
01920		JRST	LRNEX
01930	FEAT4:	AND	K,HINT
01940		JUMPN	K,ADDM4
01950	LRNEX:	ADDI	T,400
01954		AOJA	I,NAMA
01960	
01970	FINISH:	MOVE	17,[XWD SAVE,0]
01980		BLT	17,17
01990		JRA	16,1(16)
02000	
02010	
02020	SAVE:	BLOCK	20
02030	SUM:	Z
02040	
02050	POINTA:	POINT	9,K,8
02060	POINTB:	POINT	9,K,17
02070	POINTC:	POINT	9,K,26
02080	POINTD:	POINT	9,K,35
02090	
02100	OUTA:	POINT	9,0(I),8
02110	OUTB:	POINT	9,0(I),17
02120	OUTC:	POINT	9,0(I),26
02130	OUTD:	POINT	9,0(I),35
02140	
02150	IN1B:	POINT	3,0(I),11
02160	IN2B:	POINT	3,0(I),11
02170	IN3B:	POINT	3,0(I),11
02180	IN4B:	POINT	3,0(I),11
02190	
02200		END